age = 18
age2 = age
print(age)
print(age2)
# id() 查看内存地址
print(id(age))
print(id(age2))
age2 = 30  # 值改变了 age2 重新赋值
print(age)
print(age2)
print(id(age))
print(id(age2))
# 如果你从age拷贝了一个数据给age2，当你修改age2的时候，age的值不会改变
"""
不可变的数据类型：字符串、整数、元组
可变的数据类型：列表、集合、字典
"""
li = [1,2,3,4,5]
li2 = li
print(id(li))
print(id(li2))
li2[0] = 10
print(li)
print(li2)
print(id(li))
print(id(li2))
# 如果你从li拷贝了一个数据给li2，当你修改li2的时候，li的值改变了
"""
如果你从li拷贝了一个数据给li2，当你修改li2的时候，li的值不想让他改变
"""
# 浅拷贝：一维列表：最简单的列表  []
from copy import copy  # 从copy文件中导入copy函数 copy()复制内容
li2 = copy(li)  # 复制li的值重新开辟一个内存空间
print(li)
print(li2)
print(id(li))
print(id(li2))
li2[0] = 10
print(li)
print(li2)
print(id(li))
print(id(li2))
# 深拷贝：多维列表：列表嵌套
li = [1,2,3,4,[10,20,30]]
# from copy import copy
from copy import deepcopy  # 深拷贝：对对象所有层次进行拷贝
li2 = deepcopy(li)
li2[4][0] = 100  # 10-100
print(li)
print(li2)
# 复制了一份内容但是修改的时候不想改变原内容(可变数据类型)

